﻿using System;
using System.ComponentModel.DataAnnotations;

namespace RotaractProjectCalendar.Models
{
    public class Project
    {
        public int Id { get; set; }
        
        [Display(Name = "Club name")]
        [Required]
        public int ClubId { get; set; }
        
        [Display(Name = "Coordinator name")]
        [Required]
        public int CoordinatorId { get; set; }
        
        [Display(Name = "Nazwa projektu/wydarzenia")]
        [Required(ErrorMessage = "Wymagana jest nazwa projektu!")]
        [StringLength(30, ErrorMessage = "Nazwa projektu nie może być dłuższa niż 30 znaków.")]
        public string ProjectTitle { get; set; }
        
        [Display(Name = "Opis projektu/wydarzenia")]
        [Required(ErrorMessage = "Wymagany jest opis projektu!")]
        [DataType(DataType.MultilineText)]
        [StringLength(1024, ErrorMessage = "Opis projektu nie może być dłuższy niż 1024 znaki.")]
        public string Description { get; set; }
        
        [Display(Name = "Logo projektu")]
        [DataType(DataType.Upload)]
        [StringLength(500)]
        public string Photo { get; set; }
        
        [Display(Name = "Data i czas rozpoczęcia")]
        [Required(ErrorMessage = "Wymagany jest czas i data rozpoczęcia projektu!")]
        [DataType(DataType.DateTime)]
        [DisplayFormat(DataFormatString = "{0:dd-MM-yyyy HH:mm}", ApplyFormatInEditMode = true)]
        public DateTime? StartDateTime { get; set; }
        
        [Display(Name = "Data i czas zakończenia")]
        [Required(ErrorMessage = "Wymagany jest czas i data zakończenia projektu!")]
        [DataType(DataType.DateTime)]
        [DisplayFormat(DataFormatString = "{0:dd-MM-yyyy HH:mm}", ApplyFormatInEditMode = true)]
        public DateTime? EndDateTime { get; set; }
        
        [Display(Name = "Lokalizacja")]
        [Required(ErrorMessage = "Wymagana jest podanie lokalizacji.")]
        [DataType(DataType.Text)]
        [StringLength(50, ErrorMessage = "Lokalizacja nie może być dłuższa niż 50 znaków.")]
        public string Location { get; set; }

        [Display(Name = "City name")]
        [Required]
        public int CityId { get; set; }

        [Display(Name = "Data modyfikacji")]
        [DataType(DataType.DateTime)]
        [DisplayFormat(DataFormatString = "{0:dd-MM-yyyy HH:mm}", ApplyFormatInEditMode = true)]
        public DateTime Modified { get; set; }

        [Display(Name = "Adress IP")]
        [DataType(DataType.Text)]
        [StringLength(50)]
        public string IpAddress { get; set; }

        public virtual Club Club { get; set; }
        public virtual Coordinator Coordinator { get; set; }
        public virtual City City { get; set; }
    }
}